1
Efficacité et expressivité du C++ moderne
AI013Lesson 3
00:00

Le C++ moderne (C++11/14/17) introduit Abstractions à coût nul qui comble l'écart entre le contrôle matériel de bas niveau et la lisibilité de haut niveau. L'efficacité est obtenue grâce à une gestion mémoire déterministe, tandis que l'expressivité est améliorée grâce à la logique exécutée à la compilation.

1. Structure en mémoire : std::array vs. std::vector

std::array est un wrapper moderne pour les tableaux C, alloué sur le pile avec une taille fixe connue à la compilation. En revanche, std::vector réside sur le tas et croît dynamiquement. Bien que std::vector utilise un facteur de croissance géométrique (souvent $1.5\times$ ou $2\times$), le C++ moderne offre shrink_to_fit() pour récupérer la capacité inutilisée, offrant un meilleur contrôle que les langages gérés comme Go.

2. SFINAE et sécurité des types

Grâce à std::enable_if et std::is_enum, les développeurs peuvent implémenter Échec de substitution n'est pas une erreur (SFINAE). Cela permet au compilateur de choisir des surcharges de fonctions spécifiques en fonction des traits de type à la compilation, par exemple en créant un opérateur de flux universel pour les énumérations en utilisant leur std::underlying_type.

// Points forts de la gestion mémoire en C++11
v.push_back(std::move(obj)); // Sémantique de déplacement
arr.at(0); // Vérification des limites
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>